package com.wenx.v3system.modular.cloud.domain.po;

import com.baomidou.mybatisplus.annotation.TableName;
import com.wenx.base.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;

/**
 * 系统权限条件实体
 * 
 * <p>支持ABAC（基于属性的访问控制）权限条件验证</p>
 * <p>可以根据用户属性、资源属性、环境属性等进行细粒度权限控制</p>
 * 
 * @author wenx
 * @since 1.0.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_permission_condition")
public class SysPermissionCondition extends BaseEntity{

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 权限ID
     */
    private Long permissionId;

    /**
     * 条件字段，如 'department', 'team', 'ownerId', 'status'
     */
    private String field;

    /**
     * 操作符：=, !=, in, not_in, >, <, >=, <=, contains, like
     */
    private String operator;

    /**
     * 条件值（当使用contextField时可选）
     */
    private String value;

    /**
     * 从上下文获取值的字段名，如 'user.departmentId', 'resource.ownerId'
     */
    private String contextField;

    /**
     * 条件描述
     */
    private String description;

    /**
     * 条件类型：user-用户条件, resource-资源条件, environment-环境条件
     */
    private String type;

    /**
     * 条件状态：1-启用，0-禁用
     */
    private Integer status;

    /**
     * 排序
     */
    private Long sort;
    
    /**
     * 关联的数据库表名
     */
    private String tableName;
    
    /**
     * 完整SQL表达式，支持复杂权限逻辑
     */
    private String sqlExpression;
    
    /**
     * 启用状态：1-启用，0-禁用
     */
    private Integer enabled;
    
    /**
     * 优先级，数值越小优先级越高
     */
    private Integer priority;
} 